'''
1.1版本升级字符串长度筛选，特殊字符筛选
'''
import os
import time
import pandas as pd
import pandas.io.formats.excel
#时间戳转换函数
def Timestamp_to_Time(timeStamp):
    TimeArray=time.localtime(int(timeStamp))
    otherStyleTime = time.strftime("%Y年%m月%d日", TimeArray)
    return otherStyleTime
#字符串长度检测
def Len_Check(x):
    check_result=(len(str(x)))
    return check_result
PATH=os.getcwd()
FILE_PATH=PATH+'\\FILE\\'
V_RENT=pd.read_excel(FILE_PATH+os.listdir(FILE_PATH)[0],dtype="object")
LIST_NEED=['v_Area','v_SellerName','v_SellerPhone','v_RentName',\
           'v_RentPhone','v_EstateName','v_RoomNo','f_Size',\
           'f_RentPrice','i_StartRentTime','i_EndRentTime']
V_RENT=V_RENT[LIST_NEED].copy()
#时间戳转换
V_RENT['i_StartRentTime']=V_RENT['i_StartRentTime'].apply(Timestamp_to_Time)
V_RENT['i_EndRentTime']=V_RENT['i_EndRentTime'].apply(Timestamp_to_Time)
#数据类型转换
V_RENT['v_RoomNo']=V_RENT['v_RoomNo'].astype("str")
V_RENT['v_EstateName']=V_RENT['v_EstateName'].astype("str")
#构建地址+房号列
V_RENT['Add&Room']=V_RENT['v_EstateName']+V_RENT['v_RoomNo']
#删去重复值
V_RENT.drop_duplicates(subset=['Add&Room'],keep='first',inplace=True,ignore_index=True)
del V_RENT['Add&Room']
#替换表头
V_RENT.columns=["区域","出租人姓名","出租人电话","承租人姓名",\
                "承租人电话","房屋座落","房号","面积（平方米）","租金额（元）",\
                "租赁合同起始日期","赁合同终止日期"]
#模糊筛选福州区域，contains()内为模糊字段,返回值为True
V_RENT['区域筛选']=V_RENT['区域'].str.contains("仓山|台江|高新|金山|东战|"\
                                +"晋安|闽侯|上街|鼓楼|东二|马尾|城南区|甘蔗")
#筛选字段，'\d'是正则表达式，判断数字,'\D'包含非数字,'[a-z]'匹配小写字母
#'\W'匹配非字母、数字、下划线
V_RENT['出租姓名筛选']=V_RENT['出租人姓名'].str.contains('\d|[a-z]|\W')
V_RENT['承租姓名筛选']=V_RENT['承租人姓名'].str.contains('\d|[a-z]|\W')
V_RENT['出租电话筛选']=V_RENT['出租人电话'].apply(Len_Check)
V_RENT['承租电话筛选']=V_RENT['承租人电话'].apply(Len_Check)
#删除或保留判断为False的行数据
V_RENT=V_RENT[~V_RENT['区域筛选'].isin([False])]
V_RENT=V_RENT[V_RENT['出租姓名筛选'].isin([False])]
V_RENT=V_RENT[V_RENT['承租姓名筛选'].isin([False])]
V_RENT=V_RENT[V_RENT['出租电话筛选'].isin([11])] #筛选电话长度不是11的
V_RENT=V_RENT[V_RENT['承租电话筛选'].isin([11])] #筛选电话长度不是11的
#删除【筛选】字段
del V_RENT['区域筛选']
del V_RENT['出租姓名筛选']
del V_RENT['承租姓名筛选']
del V_RENT['出租电话筛选']
del V_RENT['承租电话筛选']
#添加序列
V_RENT.insert(0,"序号", range(1,len(V_RENT)+1),allow_duplicates=False)
#格式设置
def set_excel(df, set_dir):
    # 输出表格并且设置表格宽度等
    pandas.io.formats.excel.header_style = None
    writer = pd.ExcelWriter(set_dir)
    df.to_excel(writer,'Sheet1',index=False)
    # 设置格式
    workbook1 = writer.book
    worksheets = writer.sheets
    worksheet1 = worksheets['Sheet1']
    # 设置特定单元格的宽度
    worksheet1.set_column("A:A", 6)
    worksheet1.set_column("B:B", 10)
    worksheet1.set_column("C:F", 12)
    worksheet1.set_column("I:I", 10)
    worksheet1.set_column("H:J", 12)
    worksheet1.set_column("K:L", 20)
    writer.save()
#导出
save_path=PATH+'\\结果.xlsx'
set_excel(V_RENT,save_path)
print('完成')
